/*
 ============================================================================
 文件名    : BasicGeometry.h
 描述     : 一些基本的几何元素和算法声明.
 ============================================================================
 */
#ifndef GEOMETRY_H_
#define GEOMETRY_H_

//引用
#include <e32base.h>

//类声明
/*
 * TRealVector 类
 * 声明了二维向量类，提供了基本计算方法
 */
class TRealVector
	{
public:
    // X轴分量
	TReal iX;
	// Ｙ轴分量
	TReal iY;
	
public:
	TRealVector();
	TRealVector( TReal aX, TReal aY );

public:
    // 计算向量长度
	TReal GetLength();
	//　返回同方向上的单位向量
	TRealVector GetUnit();
	// 返回关于某直线的镜像
	TRealVector Mirror( TRealVector aVector );
	// 向量加法运算
	void operator += ( TRealVector aDel );
	// 向量与实数的乘法运算
	void operator *= ( TReal aFactor );
	// 向量与实数的乘法运算
	friend TRealVector operator * ( TRealVector aVector, TReal aFactor );
	// 向量的内积运算
	friend TReal operator * ( TRealVector aVec1, TRealVector aVec2 );
	// 向量的加法运算
	friend TRealVector operator + ( TRealVector aVec1, TRealVector aVec2 );
	// 向量的减法运算
	friend TRealVector operator - ( TRealVector aVec1, TRealVector aVec2 );
	};

/*
 * TRealVector 类
 * 声明了点类，坐标可以是浮点数
 */
class TRealPoint
	{
public:
    // Ｘ轴坐标
	TReal iX;
	// Y轴坐标
	TReal iY;

public:
	TRealPoint();
	TRealPoint(TReal aX, TReal aY);
	
public:
    // 点与向量加法运算
	void operator += ( TRealVector aVec );
	// 点与向量加法运算
	friend TRealPoint operator + ( TRealPoint aPoint, TRealVector aVec );
	// 点与向量减法运算
	friend TRealPoint operator - ( TRealPoint aPoint, TRealVector aVec );
	};


#endif /* GEOMETRY_H_ */
//文件结束
